﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLTV.Public;
using QLTV.DAL;
using QLTV.BLL;


namespace QLTV.GUI.Forms
{
    public partial class frmThemDocGia : Form
    {
        DocGiaDTO dgDTO = new DocGiaDTO();
        DocGiaDAL dgDAL = new DocGiaDAL();
        DocGiaBLL dgBLL = new DocGiaBLL();
        QuyDinhBLL qgBLL = new QuyDinhBLL();
        string tam = "";
        private bool kt = false;
        public frmThemDocGia()
        {
            InitializeComponent();
        }
        //con tructor voi tham so _MaDG
        public frmThemDocGia(string _MaDG) {
            InitializeComponent();
            dgDTO.MaDG = _MaDG;
            DataTable dt = dgBLL.LoadDG_MaDG(dgDTO);

            tam = dt.Rows[0]["MaDG"].ToString();
            txtHoTen.Text = dt.Rows[0]["HoVaTen"].ToString();
            cbbGioiTinh.Text = dt.Rows[0]["GioiTinh"].ToString();
            dateNGS.Text = dt.Rows[0]["NgaySinh"].ToString();
            txtDC.Text = dt.Rows[0]["DiaChi"].ToString();
            txtEmail.Text = dt.Rows[0]["Email"].ToString();
            txtMaLDG.Text = dt.Rows[0]["MaLDG"].ToString();
            dateNGLap.Text = dt.Rows[0]["NgayLap"].ToString();
        }
        private bool TestInput()
        {
            if (string.IsNullOrEmpty(txtHoTen.Text))
            {
                XtraMessageBox.Show("Chưa nhập tên độc giả", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (string.IsNullOrEmpty(txtDC.Text))
            {
                XtraMessageBox.Show("Chưa nhập địa chỉ độc giả", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            DateTime NgaySinh;
            if (!DateTime.TryParse(dateNGS.EditValue.ToString(), out NgaySinh))
            {
                XtraMessageBox.Show("Ngày sinh chưa đúng", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
           
            int today = int.Parse(DateTime.Now.Year.ToString());
            int NSDG = int.Parse(NgaySinh.Year.ToString());
            int tuoidg=today-NSDG;
            //MessageBox.Show(" cai gi  "+ tuoidg);
            int tuoimax = qgBLL.GetTuoiLonNhat();
            int tuoimin = qgBLL.GetTuoiNhoNhat();
            if (tuoidg < tuoimin || tuoidg > tuoimax) {
                XtraMessageBox.Show("Tuổi không nằm trong khoảng cho phép",
                   Text,
                   MessageBoxButtons.OK,
                   MessageBoxIcon.Error);
                return false;
            }
           
            return true;


        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (!TestInput())
                return;

            if (tam != "")
            {
                dgDTO.MaDG = tam;
            }
            else
            {
                dgDTO.MaDG = txtMaDG.Text;
            }

            dgDTO.HoVaTen = txtHoTen.Text;
            if (cbbGioiTinh.Text == "Nam")
            {
                dgDTO.GioiTinh = true;
            }
            else if (cbbGioiTinh.Text == "Nữ")
            {
                dgDTO.GioiTinh = false;
            }
            dgDTO.NgaySinh = DateTime.Parse(dateNGS.Text);
            dgDTO.DiaChi = txtDC.Text;
            dgDTO.Email = txtEmail.Text;
            dgDTO.MaLDG = txtMaLDG.Text;
            dgDTO.NgayLap = DateTime.Parse(dateNGLap.Text);
            dgDTO.NgayHetHan = dgDTO.NgayLap.AddMonths(6);



            if (tam != "")
            {
                int kqupdate = dgBLL.UpdateDG_MaDG(dgDTO);
                if (kqupdate > 0)
                {
                    kt = true;
                    Is_Send = true;

                    XtraMessageBox.Show("Cập nhật chỉnh sửa dữ liệu thẻ độc giả thành công", Text, MessageBoxButtons.OK, MessageBoxIcon.None);

                }
                else
                {
                    XtraMessageBox.Show("Chỉnh sửa thất bại", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }


            }
            else
            {
                int kq = dgBLL.InsertDG(dgDTO);
                if (kq > 0)
                {
                    kt = true;
                    Is_Send = true;
                    XtraMessageBox.Show("Lập thẻ độc giả thành công", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);


                }
                else
                {
                    XtraMessageBox.Show("Lập thẻ độc giả thất bại", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }                       

        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }
        public delegate void MyDelegate(object sender, bool check);
        public event MyDelegate myEvent;
        private bool Is_Send
        {
            set
            {
                if (value)
                {
                    if (myEvent != null) myEvent(sender: this, check: kt);
                }
            }
        }

        private void panelControl1_Paint(object sender, PaintEventArgs e)
        {

        }
    }
}
